#ifndef NETWORKSERVICES_EPOLL_H
#define NETWORKSERVICES_EPOLL_H

#include <vector>
#include <sys/epoll.h>

class Channel;

class Epoll {
public:
    Epoll();
    ~Epoll();
    void UpdateChannel(Channel *ch) const;
    void RemoveChannel(Channel *ch) const;
    std::vector<Channel *> Wait(int timeout = -1);   // 运行epoll_wait()，等待事件的发生，已发生的事件用vector容器返回。

private:
    static const int MaxEvents = 100;  // epoll_wait()返回事件数组的大小。
    int epollFd = -1;
    epoll_event epollEvents[MaxEvents];
};


#endif //NETWORKSERVICES_EPOLL_H
